import os
import shutil

import pytest
from config.settings import ALLURE_RESULTS_DIR


def run_tests():
    # 清理测试结果目录（每次测试生成新结果，旧结果可删除）
    if os.path.exists(ALLURE_RESULTS_DIR):
        shutil.rmtree(ALLURE_RESULTS_DIR)
    # 确保报告目录存在
    os.makedirs(ALLURE_RESULTS_DIR, exist_ok=True)

    # 执行测试（可通过命令行参数扩展，如 --env=test 指定环境）
    pytest.main([
        "tests/basic_data/",
        f"--alluredir={ALLURE_RESULTS_DIR}",
        "-s",  # 显示打印信息
        "-v",  # 详细日志
        "--reruns=1",  # 失败重试1次
        # "-nauto",  # 关键：添加 xdist 并发，auto 表示自动根据CPU核心数分配进程
        # "--env=test",
        # "--html=reports/test_report.html"  # 额外生成 HTML 报告
    ])


if __name__ == "__main__":
    run_tests()
    # 自动打开 Allure 报告（可选）
    # 生成最终报告前，清理报告目录
    os.system(f"allure serve {ALLURE_RESULTS_DIR} --lang zh")
    # os.system(f"allure serve {ALLURE_RESULTS_DIR} --lang zh -o allure-report --clean")
